package com.dkm.orproject.dkmoa.service.serviceimpl;

import com.dkm.orproject.dkmoa.dao.OaCompanyMapper;
import com.dkm.orproject.dkmoa.domain.OaCompany;
import com.dkm.orproject.dkmoa.domain.vo.OaCompanyVo;
import com.dkm.orproject.dkmoa.service.OaCompangService;
import com.github.pagehelper.PageHelper;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import javax.annotation.Resource;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 *  @ClassName : OaCompangServiceImpl  //类名
 *  @Description : 公司的服务层  //描述
 *  @Author : 石智诚  //作者
 *  @Date: 2020-08-05 14:02  //时间
 */
@Service
@Transactional(rollbackFor = Exception.class)
public class OaCompangServiceImpl implements OaCompangService {

    @Resource
    OaCompanyMapper mapper;

    /**
     * 增加公司的
     * @param record 公司的信息
     * @return 是否增加成功
     */
    @Override
    public int insert(OaCompany record) {
        return mapper.insertSelective(record);
    }

    /**
     * 根据公司的id 查询
     * @param pkCompanyId 公司的id
     * @return 公司的信息集合
     */
    @Override
    public OaCompany selectByPrimaryKey(Long pkCompanyId) {
        return mapper.selectByPrimaryKey(pkCompanyId);
    }

    /**
     * 人员更新
     * @param record 更新以后的信息
     * @return 是否更新成功
     */
    @Override
    public int updateCompanyById(OaCompany record) {
        return mapper.updateByPrimaryKeySelective(record);
    }

    /**
     * 将人员有效性进行修改
     * @param pkCompanyId 用户信息的Id
     * @return 是否修改成功
     */
    @Override
    public int updateById(Long pkCompanyId,String personnelName) {
        return mapper.updateById(pkCompanyId,personnelName,new Date());
    }

    /**
     * 删除
     * @param list 公司的集合
     * @return
     */
    @Override
    public int deleteAll(List<Long> list) {
        return mapper.deleteAll(list);
    }

    /**
     * 查询公司并进行分页
     * @param company 公司的条件，用于条件查询
     * @param page 页面
     * @param limit 数量
     * @param startTime 开始时间
     * @param endTime 结束时间
     * @return
     */
    @Override
    public List<OaCompany> findAll(OaCompany company, Integer page, Integer limit, String startTime, String endTime) {
        //分页插件
        PageHelper.startPage(page, limit);
        List<OaCompany> list=mapper.findAll(company,startTime,endTime);
        //查询公司的信息
        return mapper.findAll(company,startTime,endTime);
    }

    /**
     * 查询公司总数用于条件查询
     * @param company 公司模型 用于条件查询
     * @param startTime 开始时间
     * @param endTime 结束
     * @return 数量
     */
    @Override
    public Long rowCount(OaCompany company, String startTime, String endTime) {
        //查询总数
        return mapper.rowCount(company,startTime,endTime);
    }

    @Override
    public int deleteById(Long pkCompanyId) {
        return mapper.deleteByPrimaryKey(pkCompanyId);
    }

    @Override
    public int updateAll(List<Long> list,String personnelName) {
        return mapper.updateAll(list,personnelName,new Date());
    }

    @Override
    public List<OaCompany> findByAll() {
        return mapper.findByAll();
    }


    @Override
    public Map<String, Object> find(Long pkCompanyId) {
        Map<String, Object> map=new HashMap<>(16);
        OaCompanyVo oaCompanyVo = mapper.selectById(pkCompanyId);
        map.put("data",oaCompanyVo);
        return map;
    }
}
